
package model;


public class Decoder {
	
	private int earthRadius = 6367;
	private GPS gps;
	
	public Decoder() {
		gps = new GPS();
	}
	
	/**
	 * Transforma les coordenades GPS a cartesianes
	 * @param latitude
	 * @param longitude
	 * @return les coordenades x,y corresponents a la longitud i latitud
	 */
	public double[] convertSphericalToCartesian(double latitude, double longitude) {
		double lat = DegtoRad (latitude);
		double lon = DegtoRad (longitude);
		double x = earthRadius * Math.cos(lat)*Math.cos(lon);
		double y = earthRadius * Math.cos(lat)*Math.sin(lon);
	    double coord[] = new double[2];
	    coord[0] = x;
	    coord[1] = y;
	    return coord;
	}

	/**
	 * Tranforme els graus a radiants.
	 * @param deg
	 * @return els radiants
	 */
	private double DegtoRad(double deg) {
		return deg*Math.PI/180.0;
	}
	
	/**
	 * Carrega l'archou nmea.
	 * @param file
	 * @return true si s'ha carregat, false si no.
	 */
	public boolean loadFile(String file) {
		return gps.loadFile(file);
	}

	/**
	 * @return the gps
	 */
	public GPS getGps() {
		return gps;
	}
	
}
